Service-assisted network access point selection

ABSTRACT

Embodiments enable prioritization and selection of network access points (NAP) by a computing device using NAP attribute values. The computing device obtains the attribute values based on a location of the computing device and/or proximate NAPs detected by the computing device. The obtained attribute values are compared to a state of the computing device (e.g., sensor values), user preferences, or other criteria to select at least one of the NAPs for connection with the computing device. In some embodiments, a user of the computing device is presented with a list of Wi-Fi access points ranked according to relevance to the computing device and/or user.

CROSS-REFERENCE TO RELATED APPLICATION

This application is a divisional of U.S. application Ser. No.14/181,653, filed Feb. 15, 2014, which is a continuation of U.S. Pat.No. 8,665,847, filed Nov. 8, 2011, the entirety of which are herebyincorporated by reference herein.

BACKGROUND

Mobile devices such as mobile telephones, laptops, and tablets canconnect to other devices and networks via public or private Wi-Fi“hotspots.” With existing systems, users of the mobile devices oftenhave a difficult time selecting a hotspot that provides reliableInternet connectivity. For example, some hotspots are poorly configured,malfunctioning, or even malicious, while other hotspots may requirepayment or a complex registration procedure before allowing access.Further, in densely populated areas in which there may be dozens ofavailable hotspots, users often have to select one of the hotspots forconnection via trial-and-error.

In existing systems, the mobile devices consume substantial amounts ofbattery power scanning for available hotspots. Further, the scanning mayoccur even when no hotspots are within range of the mobile devices, orwhen the mobile device cannot establish a reliable connection. As such,the existing systems reduce battery life with little benefit to theusers.

SUMMARY

Embodiments of the disclosure aid network access point (NAP) discoveryand selection. A computing device determines a location of the computingdevice and/or detects nearby NAPs. The computing device obtainsattribute values corresponding to one or more NAPs near the determinedlocation of the computing device and/or based on the detected nearbyNAPs. The obtained attribute values are compared to one or more sensorvalues representing a state and/or characteristics of the computingdevice (e.g., supported frequencies, availability of authenticationmechanisms, and affiliation with NAP operators). The comparison is usedto prioritize the available NAPs for the user. In some embodiments, thecomputing device automatically connects to the NAP with the highestrating.

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used as an aid in determining the scope of the claimed subjectmatter.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is an exemplary block diagram illustrating mobile computingdevices and network access point providers communicating with a networkaccess point directory service.

FIG. 2 is an exemplary block diagram illustrating a computing devicestoring data and logic for aiding network access point discovery andselection.

FIG. 3 is an exemplary block diagram illustrating modules for storingattribute values and using the attribute values to select a networkaccess point for connection.

FIG. 4 is an exemplary flow chart illustrating operation of a computingdevice to select a network access point based on a location of thecomputing device.

FIG. 5 is an exemplary flow chart illustrating operation of a computingdevice to select a network access point based on detected, nearbynetwork access points.

FIG. 6 is an exemplary flow chart illustrating operation of a computingdevice to adjust a scan pattern based on attribute values associatedwith network access points.

FIG. 7 is an exemplary block diagram illustrating a plurality of mobilecomputing devices detecting a plurality of network access points.

Corresponding reference characters indicate corresponding partsthroughout the drawings.

DETAILED DESCRIPTION

Referring to the figures, embodiments of the disclosure enable thediscovery and selection of network access points 218 (NAPs) whilepreserving battery life. In some embodiments, a NAP directory service106 aggregates attribute values 110 describing NAPs 218 and shares theaggregated attribute values 110 with computing devices 202 such asmobile computing devices 102. The computing devices 202 filter the NAPs218 based on device state or other criteria or parameters to identifyNAPs 218 relevant to the computing devices 202. For example, theidentified NAPs 218 are prioritized for presentation to, and selectionby, the user. In other embodiments, the computing device 202automatically connects to a preferred one of the identified NAPs 218(e.g., the NAP 218 with the highest rating). Aspects of the disclosurealso enable the computing devices 202 to adjust scan patterns 214 (e.g.,optimize Wi-Fi scanning by, for example, temporarily disabling scanning)according to the availability of proximate NAPs 218, or lack thereof, topreserve battery life.

Referring next to FIG. 1, an exemplary block diagram illustrates mobilecomputing devices 102 and NAP providers 104 communicating with the NAPdirectory service 106. The mobile computing devices 102 may be a singledevice or a plurality of devices such as mobile telephones. Whiledescribed as mobile computing devices 102 in examples herein, aspects ofthe disclosure are operable with any computing device 202. The NAPproviders 104 may be a single provider or a plurality of providersincluding any entity that provides, maintains, and/or operates one ormore NAPs 218. For example, the NAP providers 104 may represent mobileoperators, Wi-Fi aggregators, access point operators, or any otherentity. The NAPs 218 include any means for connecting one device toanother device. The NAPs 218 provide wired and/or wireless connection tothe mobile computing devices 102. Exemplary NAPs 218 include Internethotspots, Ethernet portals, fiber portals, local area network portals,wide area network portals, cellular portals, broadband portals, and thelike.

In the example of FIG. 1, the mobile computing devices 102 and the NAPproviders 104 communicate with the NAP directory service 106 via anetwork 108 such as the Internet. The network 108, however, may includeany network and is not limited to the Internet.

The NAP directory service 106 represents any service that collects, onan on-going basis, data describing NAPs 218 and/or the mobile computingdevices 102. In some embodiments, the NAP directory service 106 is acloud-based service that collects data in the form of reports. The NAPdirectory service 106 may, in some embodiments, share at least a portionof the collected data (and possibly data derived therefrom) with otherdevices. For example, the NAP directory service 106 aggregates data fromthe mobile computing devices 102 and makes available the aggregateddata, or a portion thereof. The NAP directory service 106 may also inferor derive data based on the collected data. For example, overallstatistics and trends may be inferred. The aggregated data and/or thederived data may be shared with the mobile computing devices 102, theNAP providers 104, or both. In some embodiments, the aggregation andsharing of the data is referred to as crowdsourcing.

In some embodiments, the NAP directory service 106 determines whether toaccept reports from particular entities based on entity reputation andthe quantity of reports involving the same NAPs 218. For example, areport is given high fidelity if the submitting mobile computing device102 has submitted reliable reports in the past. The NAP directoryservice 106 may also weight or discount reports based on the entityreputation.

The NAP directory service 106 collects data that is obtained,calculated, or otherwise provided by the mobile computing devices 102and/or the NAP providers 104. In some embodiments, the collected datadescribes attributes associated with NAPs 218 detected by the mobilecomputing devices 102 as well as attributes associated with the mobilecomputing devices 102 themselves. For example, the mobile computingdevices 102 collect attribute values 110 corresponding to one or more ofthe following attributes of the NAPs 218: NAP name (e.g., SSID), whetherregistration by the mobile computing device 102 is required, roamingpartners, reliability, availability, security settings (e.g.,authentication and encryption protocols), location (e.g., fixed ormobile), presence of captive portal and authentication protocols (e.g.,wireless Internet service provider roaming), use costs and conditions(e.g., free for subscribers of a particular mobile operator), basicservice set identification (BSSID) such as operating frequencies andwireless standards, observed quality of service (QoS), supportedthroughput and latency, access limitations (e.g., blocked ports,destinations), location per BSSID, association successes and failures,timestamp associated with the attribute values 110, association withidentity management entity for federated access, equipment maker andmodel of the mobile computing device 102, elapsed time betweenconnection to the NAP 218 and the transfer of data, connection duration,signal strength, and packet loss.

In some embodiments, the NAP directory service 106 calculates orotherwise determines attribute values 110 for one or more of theabove-listed attributes of the NAPs 218 based on other receivedattribute values 110. Further, the NAP providers 104 may provideattribute values 110 for one or more of the above-listed attributes. Forexample, the NAP providers 104 may identify NAPs 218 and capabilities ofeach of these NAPs 218.

As another example, the mobile computing devices 102 collect attributevalues 110 corresponding to one or more of the following attributes ofthe mobile computing devices 102: identifier, location, speed, directionof movement, device capabilities (e.g., supported frequencies,standards, and authentication protocols), roaming agreements (e.g.,between mobile operator and NAP provider 104), application requirements(e.g., voice, video, gaming, basic browsing), age of the last reportrelated to the NAP 218 from the mobile computing device 102 (e.g.,outdated entries may be removed by the NAP directory service 106), andfederated identity that can be used to limit exposure of the NAP 218(e.g., corporate or university network infrastructure).

In some embodiments, the NAP directory service 106 calculates orotherwise determines attribute values 110 for one or more of theabove-listed attributes of the mobile computing devices 102 based onother received attribute values 110.

Referring next to FIG. 2, an exemplary block diagram illustrates thecomputing device 202 storing data and logic for aiding NAP 218 discoveryand selection. The computing device 202 represents any device executinginstructions (e.g., as application programs, operating systemfunctionality, or both) to implement the operations and functionalityassociated with the computing device 202. The computing device 202 maybe the mobile computing device 102 or any other portable device. In someembodiments, the mobile computing device 102 includes a mobiletelephone, laptop, tablet, computing pad, netbook, gaming device, and/orportable media player. The computing device 202 may also include lessportable devices such as desktop personal computers, kiosks, andtabletop devices. Additionally, the computing device 202 may represent agroup of processing units or other computing devices.

The computing device 202 has at least one processor 206, one or moresensors 208, and a memory area 210. The processor 206 includes anyquantity of processing units, and is programmed to executecomputer-executable instructions for implementing aspects of thedisclosure. The instructions may be performed by the processor 206 or bymultiple processors executing within the computing device 202, orperformed by a processor external to the computing device 202. In someembodiments, the processor 206 is programmed to execute instructionssuch as those illustrated in the figures (e.g., FIG. 4, FIG. 5, and FIG.6).

The computing device 202 further has one or more sensors 208 associatedtherewith. The sensors 208 may be internal and/or external to thecomputing device 202. Exemplary sensors 208 include, but are not limitedto, a cellular radio or modem, a global positioning system (GPS)receiver, a Wi-Fi adapter or modem, a BLUETOOTH brand communicationservice element, a three-dimensional motion sensor, a camera, amicrophone, one or more accelerometers, and a photoreceptive lightsensor. Each of the sensors 208 provides at least one sensor value 216for use by the computing device 202 (e.g., by an operating system orapplications 212). The type and range of the sensor values 216 varybased on the sensor 208 and may include, for example, numerical valuesand/or alphabetic values.

The computing device 202 further has one or more computer readable mediasuch as the memory area 210. The memory area 210 includes any quantityof media associated with or accessible by the computing device 202. Thememory area 210 may be internal to the computing device 202 (as shown inFIG. 2), external to the computing device 202 (not shown), or both (notshown).

The memory area 210 stores, among other data, one or more applications212. The applications 212, when executed by the processor 206, operateto perform functionality on the computing device 202. Exemplaryapplications 212 include mail application programs, web browsers,calendar application programs, address book application programs,messaging programs, media applications, location-based services, searchprograms, and the like. The applications 212 may communicate withcounterpart applications or services such as web services accessible viaa network. For example, the applications 212 may represent downloadedclient-side applications that correspond to server-side servicesexecuting in a cloud.

The memory area 210 further stores at least one scan pattern 214. Thescan pattern 214 represents a schedule or other criteria used by thecomputing device 202 to determine when and how to scan, detect, orotherwise observe NAPs 218 or other devices proximate to the computingdevice 202. For example, based on the scan pattern 214, the computingdevice 202 may scan for NAPs 218 every minute, every 10 minutes, ormanually upon request from the user.

The attribute values 110 for the NAPs 218 and the observing computingdevices 202 may be stored in the memory area 210. In some embodiments,the attribute values 110 stored in the memory area 210 represent a cacheof the attribute values 110 observed by the computing device 202. Inother embodiments, the attribute values 110 stored in the memory area210 represent cached attribute values 110 pushed by the NAP directoryservice 106 or otherwise provided by the NAP directory service 106. Forexample, the cached attribute values 110 represent a subset of attributevalues 110 from the NAP directory service 106 filtered by a location ofthe computing device 202.

The memory area 210 may further store a set of observed or nearby NAPs218. Each NAP 218 may be identified by any identifier unique among theNAPs 218.

The memory area 210 further stores one or more computer-executablecomponents. Exemplary components include a scan component 220, adirectory component 222, a state component 224, a selection assistancecomponent 226, and a communications interface component 228. Operationof the components is described below with reference to FIG. 5.

Referring next to FIG. 3, an exemplary block diagram illustrates modulesfor storing attribute values 110 and using the attribute values 110 toselect at least one of the NAPs 218 for connection. In some embodiments,the modules are associated with the computing device 202. A discoveryand quality assessment module 304 works with a network stack 302 toidentify one or more nearby NAPs 218 detected by the computing device202. The discovery and quality assessment module 304 further determinesattribute values 110 associated with each of the detected NAPs 218 andgenerates a report for delivery to the NAP directory service 106. Thediscovery and quality assessment module 304 may determine the attributevalues 110 upon and during connection to the NAP 218. The attributevalues 110 are stored in, for example, a database or other memory area210 associated with the computing device 202. The attribute values 110may also be shared by the computing device 202 with other entities, suchas with the NAP directory service 106.

In the example of FIG. 3, a NAP selection assistance module 306 receivesdata from a location detection module 308 and/or the network stack 302.For example, the location detection module 308 includes a GPS receiveror any other hardware and/or software for determining a location orposition of the computing device 202. The location may include GPScoordinates, an address, a store name, nearby landmarks, and the like.The network stack 302 identifies one or more nearby NAPs 218 detected bythe computing device 202.

The NAP selection assistance module 306 uses the output from thelocation detection module 308 and/or the network stack 302 to filter theattribute values 110 and store the filtered attribute values 110 in acache module 310 (e.g., to reduce server queries). The filteredattribute values 110 in the cache module 310 represent the attributevalues 110 of interest to the computing device 202. For example, theattribute values 110 correspond to NAPs 218 near the computing device202.

The operations next described with reference to FIG. 4, FIG. 5, and FIG.6 may be implemented by an operating system executing on the computingdevice 202. In other embodiments, the operations are implemented by atleast one of the applications 212 executing on the computing device 202.In still other embodiments, some of the operations are performed by thecomputing device 202, while the remaining operations are performed byanother entity (e.g., the NAP directory service 106).

Referring next to FIG. 4, an exemplary flow chart illustrates operationof the computing device 202 to select at least one of the NAPs 218 basedon a location of the computing device 202. In the example of FIG. 4, thecomputing device 202 performs the illustrated operations withoutscanning for proximate NAPs 218. In this embodiment, the computingdevice 202 reduces battery consumption compared to embodiments in whichthe computing device 202 performs repeated scans. At 402, the computingdevice 202 determines its location. For example, the computing device202 uses one of the sensors 208 (e.g., a GPS receiver) to determine thelocation of the computing device 202. While described with reference toGPS, aspects of the disclosure are operable with any locationdetermination means.

At 404, the computing device 202 obtains attribute values 110corresponding to one or more NAPs 218 near the determined location ofthe computing device 202. For example, the computing device 202 searchesthe memory area 210 to identify NAPs 218 whose locations are near thedetermined location of the computing device 202. The computing device202 then obtains the attribute values 110 corresponding to theidentified NAPs 218. In another example, the computing device 202 sendsthe determined location of the computing device 202 to the NAP directoryservice 106. The NAP directory service 106 identifies the NAPs 218 whoselocations are near the determined location of the computing device 202.The NAP directory service 106 then obtains the attribute values 110corresponding to the identified NAPs 218 and sends those attributevalues 110 to the computing device 202. In other examples, the computingdevice 202 obtains the attribute values 110 from a peer computing device(e.g., for those computing devices 202 without access to the NAPdirectory service 106), at least one of the NAP providers 104, and/orproximate NAPs 218.

The identified NAPs 218 may be within detection range of the computingdevice 202 (e.g., the computing device 202 could detect the identifiedNAPs 218 if the computing device 202 performed a scan) or outside thedetection range (e.g., the computing device 202 may be near, but outsideof, the range of at least one of the identified NAPs 218).

At 406, the computing device 202 determines its state. For example, thecomputing device 202 obtains sensors values from one or more of thesensors 208 associated with the computing device 202. Exemplary sensors208 include one or more of the following: a compass, a gyroscope, a GPSreceiver, an accelerometer, a proximity sensor, and a battery statesensor. In another example, the determined state may also indicatepreferences of the computing device 202 and/or the user for use inselecting NAPs 218.

At 408, the computing device 202 compares the obtained attribute values110 with the determined state. For example, the computing device 202compares the attribute values 110 to one or more of the sensor values216 representing the determined state or to other data associated withthe computing device 202 and/or the user. At 410, the computing device202 selects, based on the comparison, at least one of the NAPs 218 nearthe computing device 202. For example, the computing device 202 mayrank, rate, prioritize, or otherwise order the NAPs 218 based on thecomparison, and then select the top-ranked NAP 218. The computing device202 selects the NAP 218 that is most suitable or most appropriate giventhe determined state of the computing device 202. For example, if thestate of the computing device 202 indicates that the computing device202 is moving, the computing device 202 selects the NAP 218 that is alsomoving (e.g., Wi-Fi on a bus or on an airplane). In embodiments in whichthe computing device 202 is the mobile computing device 102, the mobilecomputing device 102 selects the NAP 218 based on a roaming agreementbetween a mobile operator associated with the mobile computing device102 and NAP providers 104.

Alternatively or in addition, the computing device 202 considers userpreferences when selecting the NAP 218. Exemplary user preferences mayspecify minimum connection security or desired communication types.

The computing device 202 attempts to connect with the selected NAP 218,or may postpone connection establishment. For example, if the computingdevice 202 is moving towards the selected NAP 218, the computing device202 may wait to connect until the computing device 202 gets closer tothe selected NAP 218.

Further, the computing device 202 may establish a connection with theselected NAP 218 automatically (e.g., in response to NAP 218 selection,without user input at the time of connection, or the like), or mayprompt the user to confirm the selection of the NAP 218. For example,the computing device 202 may present a set of candidate NAPs 218 to theuser for selection. After selection of at least one of the NAPs 218 bythe user, the computing device 202 attempts to establish a connectionwith the selected NAP 218. In some embodiments, the computing device 202ranks or orders the candidate NAPs 218 and presents the ranked set tothe user for selection.

Referring next to FIG. 5, an exemplary flow chart illustrates operationof the computing device 202 to select at least one of the NAPs 218 basedon detected, nearby NAPs 218. In the example of FIG. 5, the computingdevice 202 performs the illustrated operations without determining alocation of the computing device 202. In this embodiment, the computingdevice 202 reduces battery consumption compared to embodiments in whichthe computing device 202 performs location determination. The operationsillustrated in FIG. 5 are next described with reference to thecomputer-executable components illustrated in FIG. 2.

At 502, the scan component 220, when executed by the processor 206,causes the processor 206 to detect one or more NAPs 218 within adetection range of the computing device 202. At 504, the directorycomponent 222, when executed by the processor 206, causes the processor206 to obtain attribute values 110 corresponding to the NAPs 218detected by the scan component 220. For example, the directory component222 obtains the attribute values 110 by communicating with the NAPdirectory service 106. At 506, the state component 224, when executed bythe processor 206, causes the processor 206 to determine the state ofthe computing device 202. For example, the state component 224 obtainsone or more sensor values 216.

At 508, the state component 224 further compares the attribute values110 obtained by the directory component 222 to one or more of the sensorvalues 216 representing the state of the computing device 202. Theselection assistance component 226, when executed by the processor 206,causes the processor 206 to select, based on the comparison performed bythe state component 224, at least one of the NAPs 218 for connectionwith the computing device 202. At 510, the communications interfacecomponent 228, when executed by the processor 206, causes the processor206 to establish a connection between the computing device 202 and theNAP 218 selected by the selection assistance component 226. In someembodiments, the communications interface component 228 includes anetwork interface card and/or computer-executable instructions (e.g., adriver) for operating the network interface card.

In some embodiments, the scan component 220 further determines alocation of the computing device 202 for use by the directory component222 when obtaining the attribute values 110.

Referring next to FIG. 6, an exemplary flow chart illustrates operationof the computing device 202 to adjust at least one of the scan patterns214 based on attribute values 110 associated with NAPs 218. The scanpatterns 214 are stored in the memory area 210. The operationsillustrated in FIG. 6 execute to adjust the scan patterns 214 todecrease power consumption by the computing device 202.

At 602, the computing device 202 determines its location. At 604, basedon the determined location, the computing device 202 identifies one ormore of the NAPs 218. At 606, the computing device 202 obtains theattribute values 110 corresponding to the identified NAPs 218. At 608,the computing device 202 adjusts the scan pattern 214 based at least onthe obtained attribute values 110. In some embodiments, the computingdevice 202 compares the obtained attribute values 110 to at least one ofthe sensor values 216, and adjusts the scan pattern 214 based on thecomparison between the obtained attribute values 110 and the sensorvalue 216. The computing device 202 may adjust the scan pattern 214 todisable, suppress, prevent, or otherwise alter scanning by the computingdevice 202 of one or more of the NAPs 218. For example, if theidentified NAPs 218 are far from the computing device 202 or if the NAPs218 are unreliable, the computing device 202 conserves battery power bynot scanning for the NAPs 218 until the current location of thecomputing device 202 changes or until the computing device 202determines that at least one of the identified NAPs 218 is reliable. Inanother example, if the state of the computing device 202 indicates thatthe computing device 202 is moving at high speeds (e.g., in anautomobile or on a plane), the computing device 202 prevents scanningfor non-mobile NAPs 218.

In some embodiments, the computing device 202 may adjust the scanpattern 214 to pre-fetch attribute values 110. For example, uponarriving at an airport of a particular city or upon approach to aparticular geographic area, the computing device 202 may pre-fetch a setof NAPs 218 proximate to the airport or within the geographic area toenable the user to quickly connect to the Internet.

Adjusting the scan pattern 214 to conserve battery power mayprophetically result in a half-hour to a few hours of additional standbytime using current mobile devices.

Referring next to FIG. 7, an exemplary block diagram illustrates aplurality of mobile computing devices detecting a set of NAPs. In theexample of FIG. 7, mobile device MD2 detects five proximate NAPs (e.g.,AP1, AP2, AP3, AP4, and AP5). MD2 queries the NAP directory service 106,or any data store containing the attribute values 110, by providing theidentifiers of the detected NAPs and the location of the MD2. The NAPdirectory service 106 responds to MD2 with the attribute values 110pertaining to the detected NAPs.

In this example, the attribute values 110 indicate that AP1 and AP2 havebeen reported to be inaccessible, and that the reports are credible(e.g., high fidelity). The attribute values 110 further indicate thatAP3 requires payment, that AP4 is usually overloaded and does notsupport voice-over-Internet-Protocol (VoIP) calls, and that AP5 isassociated with the mobile operator of MD2 and is known to be in goodhealth. Based on these attribute values 110, MD2 decides to connect toAP5. After being connected to MD2 for some time (e g, minutes, hours,etc), MD2 generates a report including QoS and connection duration.Because MD2 is a device known to the NAP directory service 106 to havesubmitted previously a large number of reports, the NAP directoryservice 106 considers the report to be reliable and updates theattribute values 110 stored by the NAP directory service 106.

Additional Examples

In some embodiments, the NAP directory service 106 shares at least aportion of the attribute values 110 aggregated from the mobile computingdevices 102 with the NAP providers 104. Sharing includes, but is notlimited to, sharing in response to queries from the NAP providers 104(e.g., a request for a NAP profile). For example, the NAP directoryservice 106 may identify link quality, QoS, user behavior, and otherattributes of the NAPs 218 managed by the NAP providers 104. Sharingsuch information may help the NAP providers 104 establish or supplementa network operation center, load balance, and perform network planningbased on utilization and trends (e.g., fill in any gaps in NAPcoverage). In some embodiments, the shared attribute values 110 arefirst anonymized by the NAP directory service 106 to prevent discoveryby the NAP providers 104 of the mobile computing devices 102 and userswho submitted the reports.

In an example scenario, the computing device 202 learns connectionpreferences of the user by observing user behavior when selecting andconnecting to NAPs 218. For example, the computing device 202 may defineQoS preferences by observing which applications 212 the user executeswhen connected to one of the NAPs 218 and the amount of data transmittedby those applications 212. The computing device 202 may also observeother criteria during connection such as time-of-day, location, andconnection duration. The computing device 202 applies the learnedpreferences (and any explicit user preferences) to select NAPs 218.

In another example scenario, the NAP directory service 106 distributes alist of prioritized NAPs 218 to the mobile computing devices 102 for usewhen the mobile computing devices 102 are outside the network boundariesof their mobile operator. The mobile computing devices 102 leverage thislist when selecting one of the NAPs 218 to reduce the cost of dataaccess for the user.

In some embodiments, after selection of one of the NAPs 218, thecomputing device 202 provides navigation directions to lead thecomputing device 202 closer to the selected NAP 218 to either enableconnection or enable a better connection (e.g., stronger signalstrength).

At least a portion of the functionality of the various elements in FIG.1, FIG. 2, and FIG. 3 may be performed by other elements in FIG. 1, FIG.2, or FIG. 3, or an entity (e.g., processor, web service, server,application program, computing device, etc.) not shown in FIG. 1, FIG.2, or FIG. 3.

In some embodiments, the operations illustrated in FIG. 4, FIG. 5, andFIG. 6 may be implemented as software instructions encoded on a computerreadable medium, in hardware programmed or designed to perform theoperations, or both. For example, aspects of the disclosure may beimplemented as a system on a chip.

While no personally identifiable information is tracked by aspects ofthe disclosure, embodiments have been described with reference to datamonitored and/or collected from users. In such embodiments, notice isprovided to the users of the collection of the data (e.g., via a dialogbox or preference setting) and users are given the opportunity to giveor deny consent for the monitoring and/or collection. The consent maytake the form of opt-in consent or opt-out consent.

Exemplary Operating Environment

Exemplary computer readable media include flash memory drives, digitalversatile discs (DVDs), compact discs (CDs), floppy disks, and tapecassettes. By way of example and not limitation, computer readable mediacomprise computer storage media and communication media. Computerstorage media include volatile and nonvolatile, removable andnon-removable media implemented in any method or technology for storageof information such as computer readable instructions, data structures,program modules or other data. Computer storage media exclude propagateddata signals. In some embodiments, computer storage media areimplemented in hardware. Exemplary computer storage media include harddisks, flash drives, and other solid-state memory. In contrast,communication media typically embody computer readable instructions,data structures, program modules, or other data in a modulated datasignal such as a carrier wave or other transport mechanism and includeany information delivery media.

Although described in connection with an exemplary computing systemenvironment, embodiments of the invention are operational with numerousother general purpose or special purpose computing system environmentsor configurations. Examples of well known computing systems,environments, and/or configurations that may be suitable for use withaspects of the invention include, but are not limited to, mobilecomputing devices, personal computers, server computers, hand-held orlaptop devices, multiprocessor systems, gaming consoles,microprocessor-based systems, set top boxes, programmable consumerelectronics, mobile telephones, network PCs, minicomputers, mainframecomputers, distributed computing environments that include any of theabove systems or devices, and the like.

Embodiments of the invention may be described in the general context ofcomputer-executable instructions, such as program modules, executed byone or more computers or other devices. The computer-executableinstructions may be organized into one or more computer-executablecomponents or modules. Generally, program modules include, but are notlimited to, routines, programs, objects, components, and data structuresthat perform particular tasks or implement particular abstract datatypes. Aspects of the invention may be implemented with any number andorganization of such components or modules. For example, aspects of theinvention are not limited to the specific computer-executableinstructions or the specific components or modules illustrated in thefigures and described herein. Other embodiments of the invention mayinclude different computer-executable instructions or components havingmore or less functionality than illustrated and described herein.

Aspects of the invention transform a general-purpose computer into aspecial-purpose computing device when configured to execute theinstructions described herein.

The embodiments illustrated and described herein as well as embodimentsnot specifically described herein but within the scope of aspects of theinvention constitute exemplary means for adjusting the scan pattern 214based on the attribute values 110 of the NAPs 218 and a state of themobile computing device 102, and exemplary means for selecting at leastone of the NAPs 218 based on the attribute values 110 of the NAPs 218and a state of the mobile computing device 102.

The order of execution or performance of the operations in embodimentsof the invention illustrated and described herein is not essential,unless otherwise specified. That is, the operations may be performed inany order, unless otherwise specified, and embodiments of the inventionmay include additional or fewer operations than those disclosed herein.For example, it is contemplated that executing or performing aparticular operation before, contemporaneously with, or after anotheroperation is within the scope of aspects of the invention.

When introducing elements of aspects of the invention or the embodimentsthereof, the articles “a,” “an,” “the,” and “said” are intended to meanthat there are one or more of the elements. The terms “comprising,”“including,” and “having” are intended to be inclusive and mean thatthere may be additional elements other than the listed elements.

Having described aspects of the invention in detail, it will be apparentthat modifications and variations are possible without departing fromthe scope of aspects of the invention as defined in the appended claims.As various changes could be made in the above constructions, products,and methods without departing from the scope of aspects of theinvention, it is intended that all matter contained in the abovedescription and shown in the accompanying drawings shall be interpretedas illustrative and not in a limiting sense.

What is claimed is:
 1. A system comprising: a memory area associatedwith a mobile computing device, said memory area storing attributevalues corresponding to a set of network access points (NAPs); and aprocessor programmed to: obtain attribute values corresponding to one ormore of the set of NAPs; establish connection, based on the obtainedattribute values, to one of the NAPs; generate a report including atleast one of a quality of service and a connection duration with the oneof NAPs; and update, based on the generated report, the attribute valuescorresponding to the one of the NAPs.
 2. The system of claim 1, whereinthe attribute values corresponding to the one or more of the set of NAPsare obtained by the mobile computing device from a NAP directoryservice.
 3. The system of claim 1, wherein the processor is furtherprogrammed to submit the generated report to a NAP directory service forupdating the attribute values corresponding to the one of the NAPs basedon the generated report.
 4. The system of claim 1, wherein the mobilecomputing device is outside a range of at least one of the one or moreof the set of NAPs.
 5. The system of claim 1, wherein the attributevalues corresponding to the NAPs are obtained by the mobile computingdevice without scanning for the NAPs.
 6. The system of claim 1, whereinthe processor is further programmed to: detect the one or more of theset of NAPs as proximate to the mobile computing device; and query a NAPdirectory service for obtaining the attribute values corresponding tothe detected NAPs.
 7. The system of claim 1, wherein the attributevalues stored in the memory area represent at least one of a cachedattribute values observed by the mobile computing device and cachedattribute values pushed by a NAP directory service.
 8. The system ofclaim 1, wherein the processor is programmed to obtain the attributevalues corresponding to the one or more of the set of NAPs from acloud-based NAP directory service.
 9. The system of claim 1, wherein theprocessor is further programmed to filter the obtained attribute valuesbased on a location of the mobile computing device.
 10. A methodcomprising: obtaining, by a computing device, attribute valuescorresponding to one or more of a set of network access points (NAPs);establishing connection, based on the obtained attribute values, to oneof the NAPs; generating a report including at least a quality of serviceand a connection duration with the one of the NAPs; and submitting thegenerated report to a NAP directory service for updating the attributevalues corresponding to the one of the NAPs.
 11. The method of claim 10,wherein the NAPs are detected by the computing device.
 12. The method ofclaim 10, wherein the attribute values corresponding to the NAPs areobtained by the computing device without scanning for the NAPs.
 13. Themethod of claim 10, wherein obtaining the attribute values comprisespre-fetching the attribute values.
 14. The method of claim 10, whereinthe NAP directory service determines the generated report to bereliable, for updating the attribute values, based on at least a numberof reports submitted previously by the computing device.
 15. The methodof claim 10, wherein the NAP directory service further: aggregates theattribute values from a plurality of computing devices; and shares atleast a portion of the aggregated attribute values with one or more NAPproviders.
 16. The method of claim 15, wherein the at least a portion ofthe aggregated attribute values are shared in response to one or morequeries from the one or more NAP providers.
 17. The method of claim 15,wherein the shared attribute values are anonymized by the NAP directoryservice.
 18. One or more computer storage media embodyingcomputer-executable instructions which, when executed by a processorassociated with a computing device, perform operations comprising:obtaining, by the computing device, attribute values corresponding toone or more of a set of network access points (NAPs); establishing aconnection, based on the obtained attribute values, to one of the NAPs;generating a report describing at least a quality of service and aconnection duration with the one of the NAPs; and submitting thegenerated report to a NAP directory service for updating the attributevalues corresponding to the one of the NAPs.
 19. The computer storagemedia of claim 18, wherein the processor further performs operationscomprising: aggregating the attribute values from a plurality of othercomputing devices; and sharing at least a portion of the aggregatedattribute values with one or more NAP providers.
 20. The computerstorage media of claim 19, wherein the at least a portion of theaggregated attribute values are shared in response to one or morequeries from the NAP providers.